package 力扣;

/**
 给定一个 m x n 的矩阵，如果一个元素为 0，则将其所在行和列的所有元素都设为 0。请使用原地算法。

 示例 1:

 输入:
 [
   [1,1,1],
   [1,0,1],
   [1,1,1]
 ]
 输出:
 [
   [1,0,1],
   [0,0,0],
   [1,0,1]
 ]
 示例 2:

 输入:
 [
   [0,1,2,0],
   [3,4,5,2],
   [1,3,1,5]
 ]
 输出:
 [
   [0,0,0,0],
   [0,4,5,0],
   [0,3,1,0]
 ]
 */
public class _73矩阵置零 {

    public void setZeroes(int[][] matrix) {
        int m = matrix.length;
        int n = matrix[0].length;
        boolean[][] visited = new boolean[m][n];

        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                if( matrix[i][j] ==0 && !visited[i][j]){
                    for (int k = 0; k < m; k++) {
                        if( matrix[k][j] ==0 ){
                            continue;
                        }
                        matrix[k][j] = 0;
                        visited[k][j] = true;
                    }
                    for (int k = 0; k < n; k++) {
                        if( matrix[i][k] == 0){
                            continue;
                        }
                        matrix[i][k] = 0;
                        visited[i][k] = true;
                    }
                }
            }
        }

    }
}
